#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("GraphicsItem");
    this->setWindowIcon(QIcon("te.ico"));
    this->resize(1200,900);


    //创建所有动作:
    createAction();
    //创建菜单:
    createMenu();

    scene = new QGraphicsScene;
    scene->setSceneRect(-200,-200,400,400);

    //初始化场景
    initScene();

    //视图：
    view = new QGraphicsView;
    view->setScene(scene);
    view->setMinimumSize(800,800);          //设置视图的最小大小
    view->show();


    //设置中心控件：
    this->setCentralWidget(view);

    this->setWindowTitle("创建图元");


}

MainWindow::~MainWindow()
{
}

//创建所有动作:
void MainWindow::createAction()
{
    newAct = new QAction("新建",this);
    clearAct = new QAction("清除",this);
    exitAct = new QAction("退出",this);

    addRectAct = new QAction("加入矩形",this);
    addEllipseAct = new QAction("加入椭圆",this);
    addPolgonAct = new QAction("加入多边形",this);
    addTextAct = new QAction("加入文本",this);
    addImxAct = new QAction("加入图片",this);
    addSelfAct = new QAction("加入自定义图元",this);


    //关联槽函数：
    connect(addRectAct,SIGNAL(triggered()),this,SLOT(AddRectItemSlot()));               //加入矩形
    connect(addEllipseAct,SIGNAL(triggered()),this,SLOT(AddEllipseItemSlot()));       //加入椭圆
    connect(addPolgonAct,SIGNAL(triggered()),this,SLOT(AddPolgonItemSlot()));       //加入多边形
    connect(addTextAct,SIGNAL(triggered()),this,SLOT(AddTextItemSlot()));                 //加入文本
    connect(addImxAct,SIGNAL(triggered()),this,SLOT(AddIMxItemSlot()));                   //加入图片
    connect(addSelfAct,SIGNAL(triggered()),this,SLOT(AddSelftemSlot()));                   //加入图片

}

//创建菜单:
void MainWindow::createMenu()
{
    QMenu* fileMenu = menuBar()->addMenu("文件");

    fileMenu->addAction(newAct);
    fileMenu->addAction(clearAct);
    fileMenu->addAction(exitAct);


    QMenu* addMenu = menuBar()->addMenu("添加");

    addMenu->addAction(addRectAct);
    addMenu->addAction(addEllipseAct);
    addMenu->addAction(addPolgonAct);
    addMenu->addAction(addTextAct);
    addMenu->addAction(addImxAct);
    addMenu->addAction(addSelfAct);



}

//初始化场景：
void MainWindow::initScene()
{
    //产生随机数函数的初始化：
    qsrand((unsigned int)QTime::currentTime().msec());


    AddRectItemSlot();
    AddEllipseItemSlot();
    AddPolgonItemSlot();
    AddTextItemSlot();
    AddIMxItemSlot();
    AddSelftemSlot();


    qDebug()<<"初始化场景成功";
}

//加入矩形：
void MainWindow::AddRectItemSlot()
{
    //添加矩形：
    QGraphicsRectItem* item = new QGraphicsRectItem(0,0,50,50);     //以场景的中心点为原点的坐标系
    QPen  pen;
    pen.setWidth(2);
    pen.setColor(QColor(255,0,0));      //红色

    item->setPen(pen);
    item->setBrush(QColor(255,255,0));        //黄色
    item->setFlag(QGraphicsItem::ItemIsMovable);    //可移动

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);


    qDebug()<<"添加矩形成功";
}

//加入椭圆
void MainWindow::AddEllipseItemSlot()
{
    QGraphicsEllipseItem* item = new QGraphicsEllipseItem(0,0,80,60);
    QPen  pen;
    pen.setWidth(2);
    pen.setColor(QColor(255,0,0));      //红色

    item->setPen(pen);
    item->setBrush(QColor(255,255,0));        //黄色
    item->setFlag(QGraphicsItem::ItemIsMovable);    //可移动

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);


    qDebug()<<"添加椭圆成功";
}

//加入多边形
void MainWindow::AddPolgonItemSlot()
{
    //容器：
    QVector<QPoint> v;
    v<<QPoint(37,4)<<QPoint(71,28)<<QPoint(58,66)<<QPoint(17,66)<<QPoint(5,28);     //stream

    //加入菱形：
    QGraphicsPolygonItem* item = new QGraphicsPolygonItem(QPolygonF(v));
    QPen  pen;
    pen.setWidth(2);
    pen.setColor(QColor(255,0,0));      //红色

    item->setPen(pen);
    item->setBrush(QColor(255,0,0));        //红色
    item->setFlag(QGraphicsItem::ItemIsMovable);    //可移动

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);


    qDebug()<<"添加多边形成功";
}

//加入文本：
void MainWindow::AddTextItemSlot()
{
    QGraphicsTextItem* item = new QGraphicsTextItem("Qt_GraphicsItem");

    QFont font("宋体",16);
    item->setFont(font);
    item->setFlag(QGraphicsItem::ItemIsMovable);    //可移动

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);


    qDebug()<<"添加文本成功";
}

//加入图片
void MainWindow::AddIMxItemSlot()
{
    QGraphicsPixmapItem* item =  new  QGraphicsPixmapItem(QPixmap("tu.jpg"));

    item->setFlag(QGraphicsItem::ItemIsMovable);    //可移动

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);



    qDebug()<<"添加图片成功";
}
//加入自定义图元：
void MainWindow::AddSelftemSlot()
{
    flashItem* item = new flashItem;

    scene->addItem(item);

    //设置图形的位置是随机位置：
    item->setPos((qrand() % (int)(scene->sceneRect().width())) - 200,(qrand() % (int)(scene->sceneRect().height())) - 200);



    qDebug()<<"添加自定义图元成功";
}


